package day24.homework;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class hw4 {
    public static void main(String[] args) {
        // 定义要统计的字符串，该字符串包含多个重复的字符，我们的目标是统计每个字符出现的次数
        String s = "aabbddccddabcddcbaefjkkvaubaauoqocbopishgoery";
        
        // 创建Map集合，用于存储字符和对应的出现次数
        // 使用HashMap实现类，键(Character)存储字符，值(Integer)存储该字符出现的次数
        Map<Character, Integer> charCountMap = new HashMap<>();
        
        // 遍历字符串中的每个字符，通过循环逐个取出字符进行统计
        // 循环从索引0开始，直到字符串的最后一个字符位置
        for (int i = 0; i < s.length(); i++) {
            // 使用charAt()方法获取当前索引位置的字符
            char ch = s.charAt(i);
            // 判断当前字符是否已经在Map集合中存在
            // containsKey()方法用于检查Map中是否包含指定的键
            if (charCountMap.containsKey(ch)) {
                // 如果字符已存在，说明之前已经统计过该字符
                // 通过get()方法获取该字符当前的统计次数，然后加1
                // 使用put()方法更新该字符的统计次数
                charCountMap.put(ch, charCountMap.get(ch) + 1);
            } else {
                // 如果字符不存在，说明是第一次遇到该字符
                // 将该字符作为键，初始值1作为值存入Map集合中
                charCountMap.put(ch, 1);
            }
        }
        
        // 输出统计结果，展示每个字符及其出现的次数
        System.out.println("字符串 \"" + s + "\" 中每个字符出现的次数：");
        // 使用keySet()方法获取Map中所有键(字符)的集合
        Set<Character> keys = charCountMap.keySet();
        // 遍历所有键的集合，输出每个字符及其对应的出现次数
        for (Character key : keys) {
            // key表示字符，charCountMap.get(key)表示获取该字符对应的出现次数
            System.out.println(key + ": " + charCountMap.get(key) + "次");
        }
    }
}